#include<iostream>
using namespace std;
const int MAXN=100;
int main(){
	int n,k,i,j;
	cin>>n;
	int M[MAXN][MAXN];
	for(i=0;i<n;i++){
		for(j=0;j<n;j++){
			cin>>M[i][j];
			if(M[i][j]==-1){
				M[i][j]=999999999;
			}
		}
	}
	for(k=0;k<n;k++){
		for(i=0;i<n;i++){
			for(j=0;j<n;j++){
				if(M[i][j]>M[i][k]+M[k][j]){
					M[i][j]=M[i][k]+M[k][j];
				}
			}
		}
	}
	for(i=0;i<n;i++){
		for(j=0;j<n;j++){
			if(M[i][j]>=999999999){
				M[i][j]=-1;
			}
			cout<<M[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}
